package com.demo.springbootfileupload.service;

import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;

/**
 * @author Hanson
 * @date 2022/9/7 16:11
 */
public interface MinIOService {

    /**
     * 判断 bucket是否存在
     * @param bucketName 桶名称
     * @return 是或者否
     */
    boolean bucketExists(String bucketName);

    /**
     * 创建 bucket
     * @param bucketName 桶名称
     */
    void makeBucket(String bucketName);

    /**
     * 文件上传
     * @param bucketName
     * @param objectName
     * @param filename
     */
    void putObject(String bucketName,String objectName,String filename);

    /**
     * 文件上传
     *
     * @param bucketName
     * @param objectName
     * @param stream
     */
    void putObject(String bucketName, String objectName, InputStream stream, String contentType);

    /**
     * 文件上传
     * @param bucketName
     * @param multipartFile
     * @param filename
     */
    void putObject(String bucketName, MultipartFile multipartFile,String filename);

    /**
     * 删除文件
     * @param bucketName
     * @param filePath
     * @return
     */
    boolean removeObject(String bucketName, String filePath);

    /**
     * 下载文件
     * @param bucketName
     * @param filePath
     * @param originalName
     * @param response
     * @return
     */
    boolean downloadFile(String bucketName, String filePath, String originalName, HttpServletResponse response);

    /**
     * 获取文件路径
     * @param bucketName
     * @param objectName
     * @return
     */
    String getObjectUrl(String bucketName,String objectName);

    /**
     * 返回文件升级信息
     * @param
     * @return
     * @throws Exception
     */
    String uploadUpgradeFile(MultipartFile file) throws Exception;
}
